A partir de v5.0 el estilo visual por defecto está definido en /web/naviox/style/naviox.css. Es parecido a esto: El archivo naviox.css está en tu proyecto pero se copia desde el proyecto Addons al desplegar. En todo caso, en lugar de modificar naviox.css es mejor modificar custom.css, como se explica en la siguiente sección.
Modificar el estilo por defecto (nuevo en v4.5)
Desde la versión 4.5 podemos añadir y modificar estilos mediante el fichero custom.css en web/xava/style.
Para sobreescribir un estilo ya existente, basta con añadir el nombre del estilo y definirlo en nuestro fichero. Poniendo:
Cambiamos el tamaño de la letra de toda nuestra aplicación (incluso dentro de un portal) y la altura de las filas en la lista. Mira en naviox.css para ver todas las classes CSS disponibles.
Añadir elementos a la página (nuevo en v5.6)
Si queremos añadir nuestros propios elementos a la pagina para que aparezcan siempre visibles en nuestra aplicación podemos hacerlo en web/naviox/indexExt.jsp de nuestro proyecto. Esto se incluye al final de la página, pero usando CSS podemos colocarlo en cualquier parte de la pantalla.
Por ejemplo, si queremos poner un cartelito de BETA en la esquina superior derecha de la pantalla, así:
Podemos poner en nuestro indexExt.jsp:
<divid="beta">BETA</div>
Y después posicionarlo añadiendo lo siguiente a custom.css:
Dentro de un portal los portlets de OpenXava adquieren automáticamente la apariencia del portal, por lo tanto si trabajas con un portal simplemente has de crear o modificar el estilo del propio portal, y la aplicación de OpenXava se adaptará. Por ejemplo, cuando despliegas tu aplicación en Liferay se ve de esta forma:
Adicionalmente, si quieres un estilo específico para un portal, las siguientes propiedades están disponible en xava.properties: liferay6StyleClass, liferay51StyleClass, liferay41StyleClass, liferay43StyleClass, webSpherePortal61StyleClass, webSpherePortal6StyleClass, webSpherePortalStyleClass, JetSpeed2Style.
Así, si quieres crear tu propia estilo para las aplicaciones OpenXava cuando éstas ruedan dentro de un Liferary 6, añade la siguiente línea a xava.properties:
Y por supuesto, tendrás que escribir la clase MyLiferayStyle.
Definir tu propio estilo (hasta v4.9.1)
Estas instrucciones son para v4.2 a v4.9.1, para versiones anteriores consultar OpenXavaTest/xava.properties. Parav5.0 o superior usa default.css como se explica arriba.
Para definir tu propio estilo añade la siguiente entrada al archivo xava.properties de tu proyecto:
Después crea una carpeta llamada mystyle dentro de la carpeta web/xava/style, y añádele un archivo llamado mystyle.css. En este archivo puedes usar las siguientes clases CSS: ox-module, ox-view, ox-detail, ox-action-link, ox-image-link, ox-button-bar, ox-button-bar-button, ox-active, ox-first, ox-last, ox-label, ox-module-description, ox-frame-content, ox-list, ox-list-header, ox-list-subheader, ox-list-pair, ox-list-odd, list-pair-selected, list-odd-selected, ox-list-info, ox-list-info-detail, ox-list-title, ox-header-list-count, ox-frame (nuevo en v4.8, antes era frame), ox-frame-actions, ox-frame-title, ox-frame-title-label, ox-errors, ox-messages, ox-section, ox-section-tab, ox-active-section, ox-section-link, ox-collection-list-actions, ox-bottom-buttons, ox-page-navigation-selected, ox-page-navigation, ox-page-navigation-pages, ox-page-navigation-arrow, ox-page-navigation-arrow-disable, ox-images-gallery (new in v4.8), ox-help, ox-total-row, ox-total-cell, ox-total-capable-cell, ox-filter-cell, ox-frame-totals, ox-frame-totals-label, ox-frame-totals-value.
Opcionalmente, puedes crear tu propia clase Style extendiendo org.openxava.web.style.Style. Esto te permite control adicional sobre la apariencia, disposición y comportamiento de tu aplicación.
Estilos predefinidos (hasta v4.9.1)
Puedes usar los estilos en esta sección con v5.0 si desactivas los menús y la identificación de usuario como se explica en la migración de v4.9.1 a v5.0.
OpenXava viene con algunos estilos predefinidos incluidos. Los puedes configurar en properties/xava.properties de tu proyecto:
# styleClass and styleCSS have only effect outside a portal,
# inside a portal OX portlets acquire automatically the portal skin.
# Liferay 5.1: This is the DEFAULT, so you do not need to uncomment the next lines
#styleClass=org.openxava.web.style.Liferay51Style
#styleCSS=liferay51/css/everything_unpacked.css
# Liferay 4.3/4.4/5.0: uncomment the next line for use this nice and slow style
#styleClass=org.openxava.web.style.Liferay43Style
#styleCSS=liferay43/css/everything_unpacked.css
# Classic style: uncomment the next line for use the old OX style
#styleClass=org.openxava.web.style.PortalStyle
#styleCSS=default.css
Un ejemplo: estilo para iPad (hasta v4.9.1)
Con v5.0 el estilo estándar funciona bien con tablets, de todas formas puedes usar el estilo antiguo de iPad si desactivas los menús y la identificación de usuario como se explica en la migración de v4.9.1 a v5.0. Además, a partir dev5.1 deberías añadir la entrada org.openxava.web.style.IPadStyle en styles.properties.
El estilo por iPad se incluye por defecto en OpenXava y se activa automáticamente en el momento en que un usuario accede a la aplicación desde un iPad.
Detección de navegador/dispositivo
Para conseguir la detección del dispositivo, añadimos el siguiente método a la clase de estilo:
Esta es la forma para hacer corresponder un estilo específico con un navegador o dispositivo. Puedes usar esta técnica en tu estilo, aunque si lo haces, has de crear un archivo styles.properties en la carpeta properties de tu proyecto, añadiendo una lína con la clase de tu estilo, como la siguiente:
com.mycompany.myapp.style.MyDeviceStyle
Además, has de escribir la clase MyDeviceStyle con le método isForBrowse() apropiado.
Código JavaScript
El estilo para iPad también usa efectos nativos para iPad como flip (rotación) y slide (desplazamiento). Para conseguir esto usamos algo de código JavaScript. En este caso definimos nuestro propio método para especificar la forma en que un trozo de HTML obtenido del servidor vía AJAX se asigna a un elemento del documento HTML:
public String getSetHtmlFunction() {
return "ipad.setHtml";
}
De esta forma, indicamos que la función a usar será ipad.setHtml, en vez de la estándar. Esta función está definida en el fichero ipad.js. Tenemos que indicar en la clase de estilo que este fichero se ha de cargar:
Aquí está el código completo para la clase IPadStyle. Puedes encontrar esta clase en la distribución de OpenXava, en OpenXava/src/org.openxava.web.style.
Table of Contents
Estilo visual personalizado
A partir de v5.0 el estilo visual por defecto está definido en /web/naviox/style/naviox.css. Es parecido a esto:El archivo naviox.css está en tu proyecto pero se copia desde el proyecto Addons al desplegar. En todo caso, en lugar de modificar naviox.css es mejor modificar custom.css, como se explica en la siguiente sección.
Modificar el estilo por defecto (nuevo en v4.5)
Desde la versión 4.5 podemos añadir y modificar estilos mediante el fichero custom.css en web/xava/style.Para sobreescribir un estilo ya existente, basta con añadir el nombre del estilo y definirlo en nuestro fichero. Poniendo:
body { font-size: 9px; } .ox-list-pair, .ox-list-odd { height: 20px; }Cambiamos el tamaño de la letra de toda nuestra aplicación (incluso dentro de un portal) y la altura de las filas en la lista. Mira en naviox.css para ver todas las classes CSS disponibles.Añadir elementos a la página (nuevo en v5.6)
Si queremos añadir nuestros propios elementos a la pagina para que aparezcan siempre visibles en nuestra aplicación podemos hacerlo en web/naviox/indexExt.jsp de nuestro proyecto. Esto se incluye al final de la página, pero usando CSS podemos colocarlo en cualquier parte de la pantalla.Por ejemplo, si queremos poner un cartelito de BETA en la esquina superior derecha de la pantalla, así:
Podemos poner en nuestro indexExt.jsp:
Y después posicionarlo añadiendo lo siguiente a custom.css:
Dentro de portales
Dentro de un portal los portlets de OpenXava adquieren automáticamente la apariencia del portal, por lo tanto si trabajas con un portal simplemente has de crear o modificar el estilo del propio portal, y la aplicación de OpenXava se adaptará. Por ejemplo, cuando despliegas tu aplicación en Liferay se ve de esta forma:Adicionalmente, si quieres un estilo específico para un portal, las siguientes propiedades están disponible en xava.properties: liferay6StyleClass, liferay51StyleClass, liferay41StyleClass, liferay43StyleClass, webSpherePortal61StyleClass, webSpherePortal6StyleClass, webSpherePortalStyleClass, JetSpeed2Style.
Así, si quieres crear tu propia estilo para las aplicaciones OpenXava cuando éstas ruedan dentro de un Liferary 6, añade la siguiente línea a xava.properties:
Y por supuesto, tendrás que escribir la clase MyLiferayStyle.
Definir tu propio estilo (hasta v4.9.1)
Estas instrucciones son para v4.2 a v4.9.1, para versiones anteriores consultar OpenXavaTest/xava.properties. Para v5.0 o superior usa default.css como se explica arriba.Para definir tu propio estilo añade la siguiente entrada al archivo xava.properties de tu proyecto:
Después crea una carpeta llamada mystyle dentro de la carpeta web/xava/style, y añádele un archivo llamado mystyle.css. En este archivo puedes usar las siguientes clases CSS: ox-module, ox-view, ox-detail, ox-action-link, ox-image-link, ox-button-bar, ox-button-bar-button, ox-active, ox-first, ox-last, ox-label, ox-module-description, ox-frame-content, ox-list, ox-list-header, ox-list-subheader, ox-list-pair, ox-list-odd, list-pair-selected, list-odd-selected, ox-list-info, ox-list-info-detail, ox-list-title, ox-header-list-count, ox-frame (nuevo en v4.8, antes era frame), ox-frame-actions, ox-frame-title, ox-frame-title-label, ox-errors, ox-messages, ox-section, ox-section-tab, ox-active-section, ox-section-link, ox-collection-list-actions, ox-bottom-buttons, ox-page-navigation-selected, ox-page-navigation, ox-page-navigation-pages, ox-page-navigation-arrow, ox-page-navigation-arrow-disable, ox-images-gallery (new in v4.8), ox-help, ox-total-row, ox-total-cell, ox-total-capable-cell, ox-filter-cell, ox-frame-totals, ox-frame-totals-label, ox-frame-totals-value.
Opcionalmente, puedes crear tu propia clase Style extendiendo org.openxava.web.style.Style. Esto te permite control adicional sobre la apariencia, disposición y comportamiento de tu aplicación.
Estilos predefinidos (hasta v4.9.1)
Puedes usar los estilos en esta sección con v5.0 si desactivas los menús y la identificación de usuario como se explica en la migración de v4.9.1 a v5.0.OpenXava viene con algunos estilos predefinidos incluidos. Los puedes configurar en properties/xava.properties de tu proyecto:
Un ejemplo: estilo para iPad (hasta v4.9.1)
Con v5.0 el estilo estándar funciona bien con tablets, de todas formas puedes usar el estilo antiguo de iPad si desactivas los menús y la identificación de usuario como se explica en la migración de v4.9.1 a v5.0. Además, a partir de v5.1 deberías añadir la entrada org.openxava.web.style.IPadStyle en styles.properties.El estilo por iPad se incluye por defecto en OpenXava y se activa automáticamente en el momento en que un usuario accede a la aplicación desde un iPad.
Detección de navegador/dispositivo
Para conseguir la detección del dispositivo, añadimos el siguiente método a la clase de estilo:public boolean isForBrowse(String browser) { return browser != null && browser.contains("iPad"); }Esta es la forma para hacer corresponder un estilo específico con un navegador o dispositivo. Puedes usar esta técnica en tu estilo, aunque si lo haces, has de crear un archivo styles.properties en la carpeta properties de tu proyecto, añadiendo una lína con la clase de tu estilo, como la siguiente:Además, has de escribir la clase MyDeviceStyle con le método isForBrowse() apropiado.
Código JavaScript
El estilo para iPad también usa efectos nativos para iPad como flip (rotación) y slide (desplazamiento). Para conseguir esto usamos algo de código JavaScript. En este caso definimos nuestro propio método para especificar la forma en que un trozo de HTML obtenido del servidor vía AJAX se asigna a un elemento del documento HTML:public String getSetHtmlFunction() { return "ipad.setHtml"; }De esta forma, indicamos que la función a usar será ipad.setHtml, en vez de la estándar. Esta función está definida en el fichero ipad.js. Tenemos que indicar en la clase de estilo que este fichero se ha de cargar:private static String [] jsFiles = { "ipad/ipad.js", }; public String [] getNoPortalModuleJsFiles() { return jsFiles; }Este archivo ipad.js se encuentra en la carpeta web/style/ipad:Archivo CSS
Aquí tenemos el ipad.css completo. Lo puedes encontrar en la distribución de OpenXava, en la carpeta OpenXava/web/style/ipad.Clase de estilo
Aquí está el código completo para la clase IPadStyle. Puedes encontrar esta clase en la distribución de OpenXava, en OpenXava/src/org.openxava.web.style.